//==================================================================
/// sprite.h
///
/// Created by Davide Pasca - 2009/10/5
/// See the file "license.txt" that comes with this project for
/// copyright info. 
//==================================================================

#ifndef SPRITE_H
#define SPRITE_H

//==================================================================
//==================================================================
class sprite
{
public:
	static const int	LEFT=0, RIGHT=1, TOP=2, BOTTOM=3, MIDDLE=4;
	VecOwn<image*>	mpoImages;
	VecOwn<image*>	mpoImagesFlx;
	int				mFramesN;
	int				mSx, mSy;
	int				mX, mY, mZ;
	int				mDx, mDy;
	int				mAlignX, mAlignY;
	AppBase			*mpApp;
	float			mBaseScale;
	bool			mHasShadow;

public:
	const static int	NT_FLG=1, FLIP_X_FLG=2, TRANS100_100_FLG=4;

public:
	//==================================================================
	sprite( const DStr &fname, int align_x, int align_y, float base_scale=1.0f );

	//==================================================================
	sprite( const image *pImg, int align_x, int align_y, float base_scale=1.0f );

	//==================================================================
	void create_flipped_x();

	//==================================================================
	void shadow_off();

	//==================================================================
	int add_frame( image *pImg );

	//==================================================================
	int add_frame( const DStr &fname );

	//==================================================================
	int width_get( int frame ) const;

	//==================================================================
	void draw( graphics &g, int frame, int x, int y, float scale );

	//==================================================================
	void draw_shadow( graphics &g, image &img, int x, int y, int w, int h, float scale );


	//==================================================================
	void draw( graphics &g, int frame,
						int x1a, int x2a, int ya,
						int x1b, int x2b, int yb, int flags );

	//==================================================================
	void draw( graphics &g, int frame, int x, int y, float scale, int flags );
};

#endif